Minetest, piochez en toute liberté

MIcrosoft a acheté Minecraft, le fameux jeu « bac à sable », à son créateur. Et pour une petite fortune ! Forcément, l’ogre de Redmond avait une idée derrière la tête…

Dans ce long article traduit par le groupe Framalang, Paul Brown propose une alternative pour pouvoir piocher en paix, et utiliser la puissante idée de Markus Persson en toute liberté.

Minetest, un serious game pour l’éducation

par Paul Brown

Article original Mining for education

Traduction Framalang : Pouhiou, MagicFab, touriste, audionuma, lamessen, LaPalice, line, Qwerty, Bromind, line, goofy, Frédéric V., Penguin, Isammoc, roptat, Meridel, galadas, Frederic V., Valdo, Roka, Vincent + 14 contributeurs anonymes

Sommaire

Ce billet est très long, et peut-être qu’une bonne partie ne vous concerne pas. Si vous voulez aller directement aux parties qui vous intéressent, voici le sommaire :

Pourquoi utiliser Minecraft comme outil pédagogique est une mauvaise idée

Pourquoi utiliser Minetest comme outil pédagogique est une bien meilleure idée (et comment débuter)

Tout est dans les mods

Jouer au jeu

Mettre un serveur en place

Minetest comme outil pédagogique

Blocs de construction

Mises en garde

Conclusion

Quelle serait votre réaction si tous les menus de la cantine de votre enfant étaient livrés par un seul et unique fournisseur de plats préparés et de boissons sucrées ? Que diriez-vous si le régime alimentaire de votre enfant était limité à des chips, des tortillas goût fromage et des boissons sucrées gazeuses, sans possibilité d’alternative plus saine ?

Étant parent moi-même, je suppose que vous trouveriez épouvantable l’idée que l’école n’offre que de la malbouffe à votre enfant, à tel point que vous seriez prêt à envisager de le changer d’établissement. Mais que faire si c’était la même chose dans tout le pays ?

Ce n’est pas tout, imaginez qu’en plus le fournisseur de malbouffe ait apposé son logo partout : sur les tasses, les assiettes et sur les affiches qui décorent les murs des classes. D’ailleurs, en parlant de salles de classe, quand arrive le moment de l’apprentissage des bases de la nutrition, les chapitres du manuel scolaire s’avèrent rédigés par le service marketing de cette même entreprise qui fournit déjà les repas.

La plupart des parents, je l’espère, trouveraient cela scandaleux. Pourtant, on n’entend pas beaucoup de protestations véhémentes quand il se passe exactement la même chose dans un cours d’informatique et même pendant une session d’apprentissage assisté par ordinateur.

Les élèves n’apprennent pas à se servir d’un traitement de texte, ils apprennent Microsoft Word. Il n’apprennent pas à concevoir des présentations, ils apprennent Microsoft PowerPoint. On leur demande de présenter leurs travaux, que ce soit une rédaction, un diaporama, ou un graphique, dans l’un des formats propriétaires de Microsoft, de les enregistrer sur des clés USB formatées suivant le système de fichiers breveté par Microsoft. C’est ça et rien d’autre.

Voici comment Microsoft souhaite rentrer dans les écoles…

Pour une gigantesque entreprise comme Microsoft, c’est tout à fait logique. Non seulement le marché de l’éducation est immense et juteux en soi, mais transformer des élèves en futurs travailleurs, managers et entrepreneurs qui ont appris à la lettre et de façon formelle à dépendre exclusivement de ses produits, voilà une perspective qui doit être irrésistible.

Mais tandis que les produits Microsoft prédominent dans l’enseignement secondaire et universitaire, il manquait encore à l’entreprise la principale part du gâteau de l’éducation. En tant que manipulateur aguerri du marché, Microsoft reconnaît que le lavage de cerveau fonctionne d’autant mieux que vous commencez jeune. Mais jusqu’à ces dernières années, ils n’avaient tout simplement pas le produit pour capter cette tranche d’âge.

Maintenant, si. Maintenant, ils ont Minecraft.

Pour détruire tout espoir que ce logiciel immensément populaire soit un jour publié sous licence libre (comme Markus « Notch » Persson a prétendu jadis qu’il pourrait l’être), Microsoft a déboursé 2,5 milliards de dollars en 2014 pour le jeu de Persson et s’est immédiatement attelé à le rendre encore plus attrayant grâce à la conclusion d’un accord avec Lego qui a fait du jeu la star de sa technologie Hololens, grâce aussi à la réalisation d’un film, en limitant toutefois les fonctionnalités dans le même temps.

Ah bon, vous n’aviez pas entendu parler de ce dernier point ? Je dois vous révéler que dès que vous faites abstraction du nouvel emballage attrayant et du tapage médiatique, vous pouvez enfin voir ce que Microsoft entend faire de Minecraft. En simplifiant le jeu pour l’adapter à sa version mobile, et en ne le faisant plus tourner sous Java, Microsoft peut mieux contrôler sur quelles plateformes il pourra fonctionner (vous savez que Minecraft fonctionne bien sous GNU/Linux parce qu’il est écrit en Java ? C’est la première chose qui sera supprimée), et tuer d’un coup tout l’écosystème de mods non validés par Microsoft.

C’est ainsi que les choses se profilent. Avant que tout ne parte en vrille, la question est de savoir si la communauté du logiciel libre a un plan B. Existe-t-il un logiciel libre susceptible de rivaliser avec Minecraft ?

Une solution ouverte

Cet article serait bien court si la réponse était « non ».

Pour être certain de ne pas me fourvoyer, j’ai passé la majeure partie des quatre dernières semaines à la recherche d’alternatives. N’ayant pas eu beaucoup d’expérience avec les jeux d’origine (Infiniminer et Dwarf Fortress), j’ai appris les rudiments du minage et de l’artisanat (du crafting), puis davantage. J’ai discuté avec des développeurs et des utilisateurs sur leurs canaux IRC – principalement pour demander de l’aide quand j’étais bloqué. J’ai aussi appelé en renfort des joueurs expérimentés de Minecraft (en l’occurrence, mon fils et ses copains) pour tester différentes versions libres et à code source ouvert de ce genre de jeux, afin qu’ils me fassent part de leurs commentaires.

Le verdict est tombé. La réponse est Minetest.

Le soleil se lève sur un lagon de Minetest.
toutes les images sont CC-BY-SA Paul Brown / OCSMag

Je ne vais pas enfoncer des portes ouvertes et vous dire que Minetest est libre tant au sens de « liberté d’expression » qu’au sens d’« entrée libre », c’est-à-dire gratuit. Il ne vous coûtera pas un sou pour être en droit de le télécharger, de le partager et d’y jouer ; vous n’aurez pas à endurer la moindre magouille de la part d’un vendeur ; il est soutenu par une communauté qui veut simplement construire un jeu vraiment amusant et y jouer, par conséquent de nouvelles fonctionnalités ont tendance à s’ajouter au fil du temps, et aucune ne sera supprimée de façon arbitraire. Je ne veux pas répéter ici ce qui est commun à la plupart des projets de logiciels libres… Bon, trop tard, je viens de le faire. Mais outre tout ce qui précède, Minetest est assez impressionnant par lui-même.

Pour commencer, il est écrit en C/C++, ce qui le rend plus léger et plus rapide que Minecraft. Mais surtout, il fonctionne plus ou moins partout (voyez sa page de téléchargements), que ce soit sur les ordinateurs fonctionnant avec FreeBSD, Windows, GNU/Linux (cherchez-le dans vos dépôts logiciels) et MacOS X ; sur les téléphones Android ; et, chose importante pour l’éducation, il fonctionne aussi sur le Raspberry Pi.

Minetest sur le Raspberry Pi

Faire tourner Minestest sur Raspbian pour Raspberry Pi est relativement simple. Commencez par ouvrir un terminal et saisissez :

sudo apt-get update
sudo apt-get upgrade

pour être certain que le système est bien à jour. Puis installez Minetest avec :

sudo apt-get install minetest

Vous pouvez aussi installer un serveur, des créatures (« MOBs ») et des mods pour étendre les capacités du jeu original. Recherchez-les avec :

apt-cache search minetest

et choisissez ce dont vous pensez avoir besoin.

Une fois que votre gestionnaire de logiciels en a terminé avec l’installation, Minetest devrait être disponible dans le sous-menu Jeux. Mais vous ne pourrez pas y jouer tout de suite !

Minetest nécessite OpenGL, une collection de bibliothèques 3D libres. Pour activer OpenGL, lancez :

sudo raspi-config

Sélectionnez Options avancées, puis AA GL Driver, Activer et OK. Ceci démarrera le pilote expérimental OpenGL pour votre bureau.

Redémarrez votre Pi. Quand vous serez de retour sur votre bureau, vous pourrez démarrer Minetest normalement.

N.B. : Il se peut que vous ayez besoin de désactiver le pilote OpenGL pour pouvoir jouer à Minecraft.

Ce qui est bien, c’est que mises à part certaines fonctionnalités pour la gestion des écrans tactiles, ça reste le même jeu. Même la version pour Raspberry Pi est exactement identique à la version PC. Cela constitue déjà un bon atout par rapport à Minecraft qui, sur Raspberry Pi, est très limité et ne fournit pas du tout la même expérience que son équivalent sur PC. Je le sais, car à une époque, j’ai écrit à propos de Minecraft sur le Pi, et depuis, les choses n’ont pas changé d’un iota.

Vous pouvez télécharger Minetest pour votre système d’exploitation, ou si vous avez la chance d’utiliser une distribution GNU/Linux, laisser votre gestionnaire de logiciels faire le gros du travail à votre place. Vous pourrez aussi trouver quelques extras dans les dépôts de votre distribution : un serveur Minetest évidemment, et des paquets de mods fournissant des créatures, une météo, etc.

Tout est affaire de Mods

C’est l’une des principales différences entre Minecraft et Minetest : dans ce dernier, presque tout est un mod. En fait, si vous lanciez Minetest sans aucun mod, vous vous retrouveriez à vagabonder dans un monde constitué exclusivement de blocs de pierre. Le jeu Minetest standard est principalement un catalogue de mods, de blocs (« nodes » dans le jargon Minetest), de textures et de sons ajoutés au moteur de jeu. Jetez un coup d’œil dans le dossier games/minetest_game situé dans le dossier partagé minetest/ et vous comprendrez ce que je veux dire.

Vous pouvez installer de nouveaux mods en les téléchargeant depuis le wiki du site Minetest. Ensuite, vous les déposez dans le dossier mods/ (créez-le s’il n’existe pas) situé dans votre dossier minetest/. Veuillez noter que sous GNU/Linux, le dossier peut être caché, dans ce cas recherchez .minetest/ dans votre dossier home.

Admettons que vous vouliez une météo, de la pluie, de la neige et des choses du genre, dans votre monde ? Allez dans votre dossier minetest/mods/ …

cd minetest/mods/

ou bien

cd .minetest/mods/

et téléchargez le mod météo :

git clone https://github.com/Jeija/minetest-mod-weather.git

Le mod est maintenant installé. C’était facile, non ?

Tout ce qu’il vous reste à faire, c’est de l’activer.

Un dépôt de Mods pour Minetest

Si vous exécutez la version 0.4.10 de Minetest, vous avez peut-être remarqué un bouton Online mod repository sous l’onglet Mods du menu.
Lorsque vous cliquez dessus, il ne se passe pas grand-chose. Si vous consultez le fichier debug.txt dans votre répertoire minetest, vous constaterez que le programme essaie de se connecter à une page web des forums Minetest qui n’existe plus. Selon les développeurs, le dépôt de mods, ainsi que l’installation de ceux-ci à partir du jeu lui-même, sont actuellement une expérimentation infructueuse, mise en pause jusqu’à ce qu’ils trouvent quelqu’un pour implémenter un modèle fonctionnel et évolutif.
Dans la version de développement 0.4.13 de Minetest, ce bouton n’existe plus.
Bonne nouvelle pour les utilisateurs de Minetest sous Android néanmoins : il existe une application qui installe les mods de façon transparente sur votre mobile. Elle est disponible sur Google Play et marche très bien.

Démarrez Minetest, et si ce n’est déjà fait, créez un nouveau monde en cliquant sur le bouton Nouveau dans l’onglet Solo. Une nouvelle boîte de dialogue apparaît. Donnez un nom à votre monde et laissez le reste tel quel. Cliquez sur Créer.

Une fois votre monde sélectionné, cliquez sur le bouton Configurer. Cela vous affiche une liste des mods disponibles. Double-cliquez sur weather et il passera du blanc au vert. Cela signifie que ce mod sera activé quand vous lancerez votre monde.

Cliquez sur Jouer et le mod weather ouvrira les canalisations d’eau de temps en temps. Si vous êtes impatient, vous pouvez faire pleuvoir en ouvrant le HUD ([F10]) et en saisissant :

/setweather rain

ou bien

/setweather snow

à l’invite de commande.

Pour l’arrêter, saisissez :/setweather none

Si un message d’erreur apparaît et vous indique que vous n’avez pas les permissions pour démarrer et arrêter la pluie, essayez de vous les octroyer vous-même en saisissant :

/grant [votre nom de joueur] weather

dans le HUD.

Faites tomber la neige avec le mod weather

Quasiment toutes les touches de F1 à F12 ont une fonction, chacune peut être consultée sur le site de Minetest, en même temps que les autres paramètres du clavier. Parmi les plus utiles, on trouve :

Touche | Fonction | 2nd appui
F5 | Affiche les coordonnées du joueur | Affiche les statistiques du serveur
F7 | Modifie la vue caméra | Cycle parmi les vues caméra
F9 | Ouvre une mini-carte | Agrandit le zoom
F10 | Ouvre le HUD | Ferme le HUD
F12 | Prend une capture d’écran | —

En parlant du HUD… De toutes les touches ci-dessus, F10 est peut-être celle qui mérite que l’on s’y attarde. Le HUD, ou Head Up Display (affichage tête haute), vous permet de saisir des messages dans le chat ou des commandes qui vous permettent de faire davantage de choses qu’avec de simples appuis de touches.
En saisissant :

/teleport 500,5,500

par exemple, vous pouvez directement vous rendre aux coordonnées (500, 5, 500) – si vous avez le pouvoir de téléportation, je précise.

/time 9:00

réglera l’heure du jour sur 9 heures du matin.

Utilisez le HUD pour tchater ou taper des commandes

/sethome

Cette commande définit un point, par exemple, là où vous avez construit votre refuge, où vous pouvez toujours vous téléporter avec la commande :

/home

…utile si vous êtes perdu ou en danger.

Pour envoyer un message à un autre joueur, vous pouvez utiliser :

/msg [nom du joueur] [message]

La commande :

/msg Paul Bonjour Paul !

envoie « Bonjour Paul ! » au joueur de ce nom. Vous pouvez également envoyer des messages à tous les joueurs ou des messages privés comme décrit ci-dessus en appuyant sur la touche `t` (pour talk, parler en anglais).

Si vous administrez votre propre monde, vous pouvez utiliser le HUD pour envoyer des instructions afin de contrôler les joueurs indisciplinés, ainsi que des commandes spécifiques à certains mods (telles que la commande /setweather que nous avons vue plus haut). Pour obtenir la liste complète des commandes, saisissez :

/help all

Jouer au jeu

Créez un fourneau pour transformer les minerais en lingots.

Est-ce vraiment différent de jouer à Minetest, en comparaison d’avec Minecraft ? Très peu en fait. La plupart des raccourcis clavier sont exactement les mêmes et, bien sûr, il y a toute la partie fabrication. Vous n’avez pas besoin de session d’apprentissage dans Minetest. Appuyez simplement sur la touche [i] et vous accéderez à tous les emplacements contenant les matériaux et objets que vous transportez avec vous, ainsi qu’une grille de fabrication. Cela dit, vous aurez besoin de construire un fourneau pour fondre le minerai en lingots.

À côté des haches, des pelles et des épées, un autre outil très utile (et spécifique à Minetest) que vous devriez construire est le tournevis. C’est une bonne idée d’en fabriquer un assez tôt dans le jeu, dès que vous avez du bois et du fer. Le tournevis vous permet de changer l’orientation des autres objets. Si vous fabriquez des escaliers, par exemple, et que vous les disposez dans le mauvais sens, placez le tournevis dessus et vous pourrez les faire tourner sur eux-mêmes.

Différents mods ajoutent de nouveaux objets que vous pourrez fabriquer et de nouveaux matériaux bruts ou transformés. Le module Technic, par exemple, ajoute toutes sortes de trucs hi-tech, depuis le fil en cuivre pour les circuits électriques, jusqu’aux forets en diamant. Ce mod est continuellement mis à jour. L’un des plus récents ajouts est le réacteur nucléaire, qui est utile, mais aussi dangereux !

Bien que l’intérêt de Minetest ne réside pas tant dans le combat contre des monstres (et c’est pour ça que les créatures ne sont pas incluses par défaut) que dans la construction, la présence de créatures menaçant votre propriété peut certainement rendre les choses plus amusantes. Mais ce qui est encore plus amusant cependant, c’est de construire et protéger sa propriété avec des amis.

Serveur Minetest

Monter un serveur Minetest pour vos amis, vos collègues ou votre école est facile. Minetest est constitué de deux parties : le client, qui est le programme avec lequel vous interagissez directement, et un serveur, qui génère le monde, gère les joueurs, leur localisation et leur inventaire, et avec lequel vous interagissez indirectement.
Lorsque vous jouez en solo, vous faites tourner un serveur pour vous seul. En fait, si vous voulez inviter des amis dans le monde dans lequel vous jouez, vous pouvez quitter votre partie et revenir au menu, et dans l’onglet « Serveur », cocher l’option « Public ». Si vos amis sont sur le même réseau, il leur suffira de se connecter à votre adresse IP avec leurs propre clients et de commencer à jouer.

Un serveur dédié

Bien que vous puissiez vouloir éviter de faire tourner un serveur Minetest pour votre organisation en arrière-plan sur le poste de travail de quelqu’un, vous n’avez pas besoin d’une machine exclusivement dédiée à Minetest. Minetest est conçu pour être léger et, avec la puissance du matériel moderne et les capacités disque qui de nos jours atteignent le téraoctet, une tour standard suffira.

Héberger un serveur Minetest sur votre serveur de fichiers ou d’impression fera probablement l’affaire, tant que vous faites attention à sa sécurisation (voir ci-dessous).

Même un Raspberry Pi conviendra pour servir de façon réactive une demi-douzaine d’utilisateurs environ. Cependant, s’il y a beaucoup plus de joueurs, des créatures errant ici et là, de nombreuses fabrications et que de vastes explorations ont lieu, vous pourriez trouver que le Pi commence à ramer et vous devrez alors opter pour une configuration plus musclée.

Si vous prévoyez quelque chose de plus ambitieux, peut-être un serveur public ou un serveur pour votre école entière, vous devriez envisager une machine sur laquelle le serveur Minetest pourra tourner sans interface graphique.

Sur Debian GNU/Linux ou sur un système basé sur cette distribution (comme Ubuntu, Mint ou Raspbian), saisir :
su
apt-get install minetest-server
sur Debian, ou bien :
sudo apt-get install minetest-server
pour Ubuntu, Raspbian et Linux Mint pour installer le serveur autonome.

Vous pouvez démarrer le serveur à la main sans être administrateur en saisissant :
minetestserver --info
Le paramètre –info vous informera des problèmes éventuels et affichera aussi des événements, par exemple quand un utilisateur se connecte au serveur pour jouer.

C’est une bonne méthode pour vérifier que tout fonctionne, mais les développeurs de Minetest recommandent, pour des raisons de sécurité, d’utiliser un utilisateur standard n’ayant pas les droits de super-utilisateur (sudo) pour faire tourner le serveur. Stoppez le serveur en appuyant sur les touches [Ctrl]+[c] et créez un utilisateur avec la commande suivante :

su
adduser minetest

si vous utilisez Debian, ou :

sudo su
adduser minetest

si vous utilisez Ubuntu, Mint ou Raspbian.

Définissez le mot de passe pour le nouvel utilisateur. Vous pouvez laisser tous les autres champs vides.

Quittez la session super-utilisateur (exit), connectez-vous en tant qu’utilisateur minetest et déplacez-vous dans son répertoire personnel :

exit
su minetest
[saisissez le mot de passe de minetest] cd

Lancez à nouveau minetestserver en tant que ce nouvel utilisateur.

Vous pouvez aussi jouer sur les serveurs publics d’autres joueurs.

Le serveur Minetest écoute par défaut sur le port 30000 (bien que vous puissiez le changer avec le paramètre –port), donc vous devrez autoriser cet accès au niveau de votre pare-feu et faire suivre vers ce port au niveau de votre routeur si vous lancez le serveur sur votre réseau local et que vous voulez que des joueurs de l’extérieur puissent accéder à votre partie.

Pour installer des mods, copiez-les vers le répertoire /usr/share/games/minetest/games/minetest_game/mods/ et ils seront automatiquement chargés et activés quand le serveur tournera. Pour vérifier que les mods que vous voulez ont bien été chargés, lancez le jeu, ouvrez le HUD ([F10]) et saisissez /mods.

Si vous voulez restreindre l’accès à votre serveur, car vous ne voulez jouer qu’avec vos amis et ne souhaitez pas que des inconnus viennent gâcher la fête, créez un fichier .conf et chargez-le au moment de lancer le serveur.

Un fichier .conf Minetest est un fichier texte avec une série de paires clef = valeur sur chaque ligne. Si vous voulez limiter les utilisateurs à vos seuls amis, vous pouvez par exemple demander à ce que les joueurs utilisent un mot de passe et définir un mot de passe initial que seuls vous et vos amis connaissez. Le fichier .conf devrait ressembler à ça :

name = Mon Minetest
disallow_empty_password = true
default_password = MotDePasseSecret
motd = Si ce n'est pas déjà fait, merci de changer votre mot de passe.

où MotDePasseSecret est le mot de passe que vous communiquez à vos amis.

Cela affichera aussi un message à tous les utilisateurs leur demandant de changer leur mot de passe par défaut. Les utilisateurs peuvent changer leur mot de passe en appuyant sur [Échap] (ou sur le bouton retour sous Android) depuis le jeu et en cliquant sur le bouton Changer le mot de passe.

Changer son mot de passe depuis le menu utilisateur

Démarrez le serveur en saisissant :

mineetestserver --config /chemin/vers/votre/fichier/de/configuration.conf

pour le forcer à charger votre fichier .conf.

Vous trouverez un exemple de fichier de configuration avec beaucoup d’autres options sur le dépôt GitHub de Minetest.

Une fois que tout est opérationnel, vous pouvez octroyer des privilèges à chaque utilisateur comme bon vous semble en éditant le fichier auth.txt que vous trouverez dans le répertoire de votre monde. Chaque ligne ressemble à ça :

Paul:x69lFMHqU/qrUHlRoCpIF34/56M:interact,shout

Vous voyez trois champs séparés par deux points ( :). Vous avez d’abord le nom d’utilisateur, puis une version chiffrée de son mot de passe et enfin une liste séparée par des virgules de ses privilèges. Vous pouvez ajouter des privilèges en complétant la liste :

Paul2:x69lFMHqU/qrUHlRoCpIF34/56M:interact,shout,home

Le privilège « home » permet à un joueur d’utiliser les commandes /sethome et /home que nous avons vues précédemment.

Une autre manière d’accorder des privilèges est d’accorder le privilège « privs » à votre propre joueur. Ensuite, vous pourrez accorder de nouveaux privilèges directement depuis le HUD. La commande :

/grant [player name] home

permet d’accorder le privilège « home » à un joueur. Vous pouvez aussi vous accorder plus de privilèges de cette manière.

Vous pouvez révoquer les privilèges d’un joueur en saisissant :

/revoke [player name] [privilege]

Pour voir les privilèges dont vous disposez :

/privs

dans le HUD, ou bien :

/privs [player name]

pour voir les privilèges qu’un autre joueur possède.

Une fois que vous êtes satisfait de la configuration de votre serveur, vous pourriez souhaiter configurer votre système de façon à démarrer Minetest à chaque fois que vous allumez votre ordinateur. Pour ce faire, vous pouvez créer une tâche cron qui s’exécute au démarrage.

Accédez à votre utilisateur minetest depuis une fenêtre de terminal, et ouvrez l’éditeur crontab avec la commande :

crontab -e

Ajoutez à la fin du fichier une ligne semblable à celle-ci :

@reboot /usr/games/minetestserver --config /chemin/vers/votre/fichier/de/configuration.conf

Vous devez également ajouter toute autre option dont vous auriez besoin, comme le nom du monde que vous voulez charger au démarrage, le port sur lequel vous voulez que votre serveur écoute, etc. Pour voir une liste complète des commandes possibles, saisissez :

minetestserver --help

dans un terminal.

La plupart des distributions GNU/Linux modernes, dont Debian, Ubuntu, Mint et Raspbian, utilisent désormais systemd pour gérer des choses comme les démons et les services. Les versions futures de Minetest tireront profit de ce sous-système, installeront automatiquement les fichiers de configuration et créeront un utilisateur pour les exécuter.

Un outil pédagogique

L’argument majeur en faveur de l’utilisation de Minetest par rapport à une alternative propriétaire est sa modularité. Les débutants apprécieront le fait de pouvoir modifier toutes les caractéristiques de leur personnage et des différents objets à l’intérieur du monde qu’ils ont créé.

Même les formes des personnages peuvent être modifiées en utilisant Blender

Il existe même un mod wardrobe (armoire) que l’administrateur du serveur peut remplir de textures personnalisées afin que les joueurs puissent changer leur apparence en cours de jeu.

La modularité va au delà de la simple esthétique cependant, et les développeurs de Minetest ont créé un framework complet séparé du programme principal, qui permet aux utilisateurs de créer de nouveaux blocs et d’en ajuster le comportement, de concevoir de nouveaux objets à fabriquer, et de construire pratiquement tout ce que vous pouvez imaginer. Vous pouvez également créer des mods qui affecteront le comportement du monde et vous permettre, par exemple, de créer des parties depuis le jeu Minetest lui-même.

Prenez par exemple l’ensemble de mods éducatifs listés sur le wiki de Minetest. Cela va de paquets apportant de simples blocs illustrés de lettres et de nombres, jusqu’à des mods qui rendent Minetest compatible avec l’API Python de Minecraft pour Raspberry Pi.

Voyons un exemple.

Les blocks du mod teaching

Le mod Minetest-teaching (l’apprentissage par Minetest) fournit des outils pour créer des casse-têtes arithmétiques et orthographiques. Si les élèves parviennent à les résoudre, vous pouvez les récompenser avec des objets rares ou des blocs.

Pour commencer à l’utiliser, téléchargez-le vers votre répertoire minetest/mods/ :

https://github.com/pbrown66/minetest-teaching.git

Renommez le répertoire en teaching/, sinon ça ne fonctionnera pas. Démarrez Minetest et activez le mod. Pour créer une énigme, par exemple 2+2=, entrez dans le jeu en utilisant le mode créatif et donnez-vous les privilèges de professeur. Pour cela, ouvrez le HUD ([F10]) et saisissez :

/grant [votre nom] teacher

Appuyez à nouveau sur [F10] pour fermer le HUD.

Pour mettre en place l’énigme, creusez une tranchée de 5 blocs de long. Ouvrez l’inventaire ([i]), choisissez l’onglet Nodes (Blocs) et déplacez-vous jusqu’à ce que vous voyiez les blocs d’apprentissage.

Pour l’énigme ci-dessus, vous aurez besoin de quatre blocs lab, d’un bloc checking, de deux blocs allow-dig, de deux blocs 2, d’un bloc +, d’un bloc =, d’un bloc 5 (une mauvaise réponse) et d’un bloc 4 (la bonne réponse).

Posez les quatre blocs lab dans la tranchée en commençant complètement à gauche. Dans le trou qui reste, posez le bloc checking. Placez les blocs 2, +, 2 et = sur les blocs lab comme indiqué ci-dessous.

En posant les blocs qui constituent l’énigme sur des blocs lab, vous les rendez indestructibles et les élèves ne pourront pas détruire de façon accidentelle ou volontaire l’activité proposée.

des blocs vont sur lab pour l’énigme, un emplacement cheking pour répondre, et des emplacement allow dig pour les blocs de réponses.

Cliquez du bouton droit de la souris sur le bloc checking à droite de la tranchée, et une boîte de dialogue apparaîtra. Utilisez-la pour indiquer au bloc quelle est la bonne réponse et lui faire offrir un nugget de sagesse et un prix. Dans l’exemple suivant, la bonne réponse est évidemment 4. Lorsque l’élève trouve la bonne réponse, le message « Bravo ! Voici un diamant. » s’affichera dans son chat et un diamant apparaîtra au-dessus du bloc de solution.

Pour résoudre l’énigme, les élèves doivent saisir les blocs de solution et placer le bon sur le bloc de vérification. Vous pouvez déposer les blocs de solution n’importe où, mais vous devez les placer sur un bloc allow-dig, sinon il deviennent indestructibles et les élèves ne pourront plus le récupérer. Donc, creusez deux trous là où vous souhaitez laisser les blocs de solution, placez un bloc allow-dig à l’intérieur de chacun d’eux, et placez les blocs 4 et 5 sur chacun des blocs allow-dig.

À présent, vous pouvez lâcher vos élèves en liberté dans votre monde.

Quand un élève place une réponse incorrecte (dans notre exemple, le bloc 5) sur le bloc de vérification, rien ne se passe. Il peut le détruire et réessayer. Mais quand il place la bonne réponse (dans notre cas, le bloc 4), l’énigme offre le prix et se verrouille, empêchant l’élève de frapper et de casser le bloc, et de le remettre sans cesse en place pour obtenir une infinité de diamants.

Et la bonne réponse, récompensée par un diamant.

Seul le joueur possédant les droits de professeur peut réinitialiser l’énigme. Il peut effectuer cela en frappant le bloc de solution, en frappant le bloc situé en dessous du bloc de solution et en replaçant et reprogrammant le bloc de vérification.

Blocs de construction

Toute la magie du modding est obtenue grâce à l’utilisation de Lua, un langage de programmation de haut niveau ressemblant par bien des aspects à Python (le langage utilisé dans l’édition Raspberry Pi de Minecraft). C’est un bon choix, car il est clair (vous n’avez pas à vous soucier de symboles étranges comme en PERL, ou de points virgules en fin de ligne comme en C/C++). Il combine les fonctionnalités des langages orientés objet avancés et des langages fonctionnels, et il est spécialement conçu pour la programmation de jeux vidéo.

Bien que ce ne soit pas l’endroit pour enseigner le Lua (il y a déjà d’excellentes ressources en ligne), et qu’expliquer tous les tenants et aboutissants du modding de Minetest allongerait bien trop ce qui est déjà un article excessivement long, regardons au moins l’anatomie d’un mod de type Hello World pour que vous puissiez avoir une idée de la façon de vous lancer.

Ouvrez un éditeur de texte et copiez-y ce qui suit :

minetest.register_on_joinplayer(function(player)
minetest.chat_send_all("Hello " .. player:get_player_name() .. " !")
end)

Voici votre premier mod.

Pour comprendre la première ligne, songez au fait que dans Minetest, la plupart des choses s’exécutent lorsque le joueur fait quelque chose ou que quelque chose se produit dans le monde. On appelle ces choses des événements. Quand un joueur se connecte à un monde Minetest, un événement joinplayer est envoyé. « register_on_joinplayer » est une méthode intégrée qui demande à l’objet minetest de se mettre à écoute d’un tel événement et d’exécuter une fonction quand cela se produit. La fonction est ce que vous pouvez voir entre parenthèses.

Dans notre cas, la fonction prend l’objet « player » (joueur) associé à l’événement et, à la deuxième ligne, extrait le nom du joueur en utilisant la méthode intégrée « get_player_name() ». Le nom renvoyé est stocké dans une chaîne de caractères (notez que « .. » est ce que Lua utilise pour concaténer des chaînes de caractères) qui est ensuite envoyée à tous les joueurs via la méthode intégrée « chat_send_all ».

Une fois que vous avez fini de copier le code, créez un répertoire nommé hello/ dans minetest/mods/ (ou .minetest/mods/) et sauvegardez votre fichier sous le nom init.lua dans votre nouveau répertoire. Vous pouvez aussi créer un fichier texte dans le répertoire hello/ avec une brève description du module – enregistrez-le sous le nom description.txt et il apparaîtra dans l’onglet Mods du panneau de contrôle de Minetest.

Activez le mod et tous les joueurs seront salués lorsqu’ils se joindront à la partie.

Votre mod apparaîtra dans le panneau de contrôle.

Pour en savoir plus sur la manière d’écrire des mods Minetest, consultez le wiki officiel du site des développeurs et jetez un œil aux méthodes Minetest. Cela vous donnera une idée de ce que vous pouvez faire avec le framework Lua. N’oubliez pas non plus d’étudier la façon dont vous devriez organiser les bricoles à l’intérieur de votre répertoire mod.

Mises en garde

Minetest est assez génial, mais bien entendu, il n’est pas parfait. La complexité des composants logiciels sous-jacents fait que le client comme le serveur peuvent planter de temps en temps… Ou du moins, c’est ce que les développeurs me disent. Il est intéressant de noter qu’au cours des recherches consacrées à cet article, je n’ai fait l’expérience d’aucun plantage, même quand j’utilisais la branche de développement instable.

Voici un problème bien plus réel : si Minetest aspire à être utilisé en tant que logiciel éducatif, ce qui devrait être le cas, il ne doit pas seulement rivaliser avec le poids lourd Minecraft sur ses mérites, mais aussi avec le fait que Minecraft arrive pré-installé dans Raspbian pour le Raspberry Pi et avec son interface Python.

Même si l’API Lua de Minetest est bien plus puissante que le Python de Minecraft, à tel point que ce dernier passe pour un joujou en comparaison, et que Dieu me garde de préconiser l’adoption d’une technologie seulement parce que c’est le standard de fait, il faut bien prendre en compte la résistance naturelle de l’humain au changement. Demander aux professeurs de changer à la fois de jeu et de langage de programmation va être difficile à vendre.

La modularité est un autre aspect à prendre en compte. Je l’ai dit tout à l’heure, c’est l’une des raisons qui font de Minetest un jeu génial, mais elle peut être intimidante pour les nouveaux utilisateurs. Une installation basique de Minetest est un peu spartiate : pas de créatures, pas de survie, pas de nourriture, pas de météo… On excuserait facilement un nouvel utilisateur qui, y jouant pour la première fois, se dirait que Minetest n’est qu’une très pâle copie de Minecraft. Je suggérerais la création d’une « version grand public » de Minetest, qui embarquerait le plus grand nombre possible de fonctionnalités de Minecraft que les joueurs attendent de trouver, et qui par conséquent éviterait de décevoir les nouveaux venus.

Pour terminer, il y a ma bête noire que j’évoque très souvent : la documentation. J’ai souvent dû m’en remettre au canal IRC de Minetest. Les wikis de Minetest, bien qu’ils affichent un nombre d’index impressionnant, contiennent beaucoup trop de sections vides. Les exemples de code, quand ils existent, sont inexpliqués et non commentés. Il n’y a pas de tutoriels « apprendre par la pratique ». Quand vous posez la question, les moddeurs les plus expérimentés (qui sont par ailleurs très patients et serviables) mentionnent tout le temps un fichier texte spécifique qui contient des descriptions courtes et souvent énigmatiques des modules et des attributs. Encore une fois, il n’y a pas d’exemples dans ce document qui aideraient les nouveaux utilisateurs à comprendre les outils offerts par l’API.

Conclusion

Minetest a parcouru un chemin incroyable depuis la dernière fois où nous en avions parlé. Le seul fait qu’il fonctionne sur toutes les plateformes, que ce soit GNU/Linux, Windows, OS X, Android ou Raspberry Pi, le place clairement en tête de la compétition. Il a développé une communauté saine et dynamique, et étant open source et doté d’une API ouverte relativement facile à utiliser, il a bénéficié littéralement de centaines d’extensions et de mods.

En tant qu’outil éducatif/collaboratif à destination des jeunes (et des adultes), il est idéal, même meilleur que Minecraft, en raison de sa nature ouverte et libre et de la puissance du polyvalent framework Lua. C’est logique : Minecraft a été décrit à une époque comme un « Lego social » et est vénéré parce qu’il encourage la collaboration, mais qu’y a-t-il de plus social et de plus collaboratif qu’un logiciel libre ouvert jusqu’à son code source ?